package app.services;

import java.util.List;
import java.util.Map;

import app.models.Consulta;
import app.models.Paciente;
import app.models.enums.TipoConsulta;

import com.digitalpersona.onetouch.DPFPFeatureSet;

public interface ConsultaService extends GenericService<Consulta, Long>{
	
	List<Consulta> findAllByFilter(String filter);
	
	List<Consulta> findAllForTask();
	
	Integer findFirstWeekDay(Integer month, Integer year);
	
	Integer findLastMonthDay(Integer month, Integer year);
	
	Integer amountConsultasToday();
	
	Integer amountConsultasWeek();
	
	Integer amountConsultasMonth();
	
	Integer amountPcntConsultasToday(TipoConsulta tipo);
	
	Integer amountPcntConsultasWeek(TipoConsulta tipo);
	
	Integer amountPcntConsultasMonth(TipoConsulta tipo);
	
	List<Consulta> findConsultasByDate(Integer day, Integer month, Integer year);
	
	List<Consulta> findConsultasByFilters(Consulta consulta, Integer mDay, Integer month, Integer year);
	
	List<Consulta> findLastConsultas();
	
	List<Consulta> findNextConsultas();
	
	Map<Integer, Integer> findConsultasInDayOnMonth(Consulta consulta, Integer month, Integer year);
	
	boolean matchBiometriaTemplates(Integer id, String finger, DPFPFeatureSet featureSet);
	
	Paciente findPacienteByConsultaId(Integer id);
	
	boolean verifyLatePayments(Integer pacienteId);
	
	boolean verifyPacientesConsults(Consulta consulta);
	
	boolean verifyEspecialistasConsults(Consulta consulta);
	
	void pay(Consulta consulta);
}
